home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / sys / koadd.lzh / link / link040.lzh / link.s next >
Text File  |  1995-06-20  |  12KB  |  736 lines

  1. ******
  2. ******        link.x   シンボリックリンク  by 小笠原博之
  3. ******
  4. ******        SPS-NET: SPS0783 COR. / oga@dgw.yz.yamagata-u.ac.jp
  5. ******
  6. ******        1991 9/09: v0.01
  7. ******            :
  8. ******        1991 12/2: v0.30
  9. ******
  10. ******        1995 6/20: v0.40patch
  11. ******
  12.         .include    doscall.mac
  13.  
  14. VERSION        = '0.40'
  15.  
  16. ***
  17. ***    マクロ定義
  18. ***
  19. INSUPER        macro
  20.         local    _isuper
  21.         clr.l    a1
  22.         move.w    sr,d0
  23.         and.w    #$2000,d0
  24.         bne    _isuper
  25.         moveq.l    #$81,d0
  26.         trap    #15
  27.         move.l    d0,a1        * ssp
  28.     _isuper:
  29.         endm
  30.  
  31. OUTSUPER    macro
  32.         local    _osuper
  33.         moveq.l    #0,d0
  34.         cmp.l    d0,a1
  35.         beq    _osuper
  36.         moveq.l    #$81,d0
  37.         trap    #15
  38.     _osuper:
  39.         endm
  40. ***
  41.         .text
  42.         .even
  43. ***
  44. ***    常駐ヘッダ
  45. ***
  46. KeepStart:
  47.         .dc.b    'SYMBLINKver '
  48.         .dc.l    VERSION
  49. ***
  50. ***    vector table
  51. ***
  52.         .dc.l    dosvectortable
  53.         .dc.l    functiontable
  54.  
  55. CHGVECTN    = 12
  56.  
  57. dosvectortable:
  58.  
  59. oldvectMKDIR    dc.l    0    *39
  60. oldvectRMDIR    dc.l    0    *3a
  61. oldvectCHDIR    dc.l    0    *3b
  62. oldvectCREATE    dc.l    0    *3c
  63. oldvectOPEN    dc.l    0    *3d
  64. oldvectDELETE    dc.l    0    *41
  65. oldvectCHMOD    dc.l    0    *43
  66. oldvectFILES    dc.l    0    *4e
  67. oldvectRENAME    dc.l    0    *56
  68. oldvectMAKETMP    dc.l    0    *5a
  69. oldvectNEWFILE    dc.l    0    *5b
  70. oldvectASSIGN    dc.l    0    *5f
  71.  
  72. functiontable:
  73.         .dc.l    GetLinkPathEnt
  74.         .dc.l    PathCompleteEnt
  75.         .dc.l    LinkSwitchEnt
  76.         .dc.l    LinkSetNorecEnt
  77. ***
  78. ***    リンクファイル名変換の外部呼び出しエントリ
  79. ***
  80. GetLinkPathEnt:
  81.         move.l    8(sp),d2    * word buffer
  82.         move.l    4(sp),a2    * input path
  83.         INSUPER
  84.         exg    a1,d2
  85.         bsr    linkcheck2
  86.         move.l    a2,(a1)
  87.         move.w    256+2(a1),d1
  88.         move.l    d2,a1
  89.         OUTSUPER
  90.         move.l    d1,d0
  91.         ext.l    d0
  92.         rts
  93. ***
  94. ***    リンク進路名変換の外部呼び出しエントリ
  95. ***
  96. PathCompleteEnt:
  97.         move.l    a3,-(sp)
  98.         move.l    4+4(sp),a3    *path
  99.         INSUPER
  100.         move.l    a1,-(sp)
  101.         bsr    pathcomplete3
  102.         move.l    (sp)+,a1
  103.         OUTSUPER
  104.         move.l    (sp)+,a3
  105.         rts
  106. ***
  107. ***    変換の一時 ON/OFF
  108. ***
  109. LinkSwitchEnt:
  110.         move.w    #_CHMOD,d0
  111.         tst.l    4(sp)
  112.         bne    switchon
  113.         move.w    #'p ',d0    *?
  114.     switchon:
  115.         move.w    d0,linkswitch
  116.     ****
  117.     ****
  118.     ****
  119.         moveq.l    #0,d0
  120.         rts
  121. ***
  122. ***    最大変換回数設定
  123. ***
  124. LinkSetNorecEnt:
  125.         move.w    4+2(sp),norec
  126.         rts
  127. ***
  128. ***    DOS CALL のエントリ
  129. ***
  130. * 39
  131. KeepEntMKDIR:
  132.         move.l    oldvectMKDIR(pc),a0
  133.         bra    dos_exec_arg1
  134. * 3a
  135. KeepEntRMDIR:
  136.         move.l    oldvectRMDIR(pc),a0
  137.         bra    dos_exec_arg1
  138. * 3c
  139. KeepEntCREATE:
  140.         move.l    oldvectCREATE(pc),a0
  141.         bra    dos_exec_arg2w
  142. * 3d
  143. KeepEntOPEN:
  144.         move.l    oldvectOPEN(pc),a0
  145.         bra    dos_exec_arg2w
  146. * 41
  147. KeepEntDELETE:
  148.         move.l    oldvectDELETE(pc),a0
  149.     dos_exec_nlc_arg1:
  150.         movem.l    d1/a0-a3,-(sp)
  151.         addq.w    #1,lastchange
  152.         bsr    pathcomplete_static
  153.         clr.w    lastchange
  154.         tst.w    d0
  155.         bmi    errorret
  156.         move.l    a2,d0
  157.         movem.l    (sp)+,d1/a0-a3
  158.         move.l    d0,-(sp)
  159.         move.l    sp,a6
  160.         jsr    (a0)
  161.         addq.l    #4,sp
  162.         rts
  163. * 43
  164. KeepEntCHMOD:
  165.         move.l    oldvectCHMOD(pc),a0
  166.         bra    dos_exec_arg2w
  167. * 56
  168. KeepEntRENAME:
  169.         move.l    oldvectRENAME(pc),a0
  170.     dos_exec_nlc_arg2l:
  171.         movem.l    d1/a0-a3,-(sp)
  172.         addq.w    #1,lastchange
  173.         bsr    pathcomplete_static
  174.         clr.w    lastchange
  175.         tst.w    d0
  176.         bmi    errorret
  177.         move.l    a2,d0
  178.         movem.l    (sp)+,d1/a0-a3
  179.         move.l    4(a6),-(sp)
  180.         move.l    d0,-(sp)
  181.         move.l    sp,a6
  182.         jsr    (a0)
  183.         addq.l    #8,sp
  184.         rts
  185. * 5a->8a
  186. KeepEntMAKETMP:
  187.         move.l    oldvectMAKETMP(pc),a0
  188.         jmp    (a0)
  189. * 5b->8b
  190. KeepEntNEWFILE:
  191.         move.l    oldvectNEWFILE(pc),a0
  192.  
  193.     dos_exec_arg2w:
  194.         movem.l    d1/a0-a3,-(sp)
  195.         bsr    pathcomplete_static
  196.         tst.w    d0
  197.         bmi    errorret
  198.         move.l    a2,d0
  199.         movem.l    (sp)+,d1/a0-a3
  200.         move.w    4(a6),-(sp)
  201.         move.l    d0,-(sp)
  202.         move.l    sp,a6
  203.         jsr    (a0)
  204.         addq.l    #6,sp
  205.         rts
  206.  
  207.     dos_exec_arg1:
  208.         movem.l    d1/a0-a3,-(sp)
  209.         bsr    pathcomplete_static
  210.         tst.w    d0
  211.         bmi    errorret
  212.         move.l    a2,d0
  213.         movem.l    (sp)+,d1/a0-a3
  214.         move.l    d0,-(sp)
  215.         move.l    sp,a6
  216.         jsr    (a0)
  217.         addq.l    #4,sp
  218.         rts
  219.  
  220. ***
  221. ***    DOS _FILES のエントリ    4e
  222. ***
  223. KeepEntFILES:
  224.         movem.l    d1/a0-a3,-(sp)
  225.         move.l    4(a6),a0
  226.         addq.w    #1,lastchange
  227.         bsr    pathcomplete_static_a6_2
  228.         clr.w    lastchange
  229.         tst.w    d0
  230.         bmi    errorret
  231.         move.l    a2,d0        * 4(a6)
  232.         movem.l    (sp)+,d1/a0-a3
  233.         move.l    oldvectFILES(pc),a0
  234.         move.w    8(a6),-(sp)
  235.         move.l    d0,-(sp)
  236.         move.l    (a6),-(sp)
  237.         move.l    sp,a6
  238.         jsr    (a0)
  239.         lea.l    10(sp),sp
  240.         rts
  241. ***
  242. ***    DOS _CHDIR のエントリ    3b
  243. ***
  244. KeepEntCHDIR:
  245.         movem.l    d1/a0-a3,-(sp)
  246.         bsr    pathcomplete_static
  247.         tst.w    d0
  248.         bmi    errorret
  249. *        move.l    a2,(a6)
  250.         tst.w    change
  251.         beq    notchdrv
  252.         move.l    a2,a0        * move.l    (a6),a0
  253.         move.b    (a0)+,d0
  254.         beq    notchdrv
  255.         cmp.b    #':',(a0)
  256.         bne    notchdrv
  257.         subq.w    #1,d0
  258.         and.w    #$1f,d0
  259.         move.w    d0,-(sp)
  260.         DOS    _CHGDRV
  261.         addq.w    #2,sp
  262.     notchdrv:
  263.         move.l    a2,d0
  264.         movem.l    (sp)+,d1/a0-a3
  265.         move.l    oldvectCHDIR(pc),a0
  266.         move.l    d0,-(sp)
  267.         move.l    sp,a6
  268.         jsr    (a0)
  269.         addq.l    #4,sp
  270.         rts
  271.     errorret:
  272.         movem.l    (sp)+,d1/a0-a3
  273.         rts
  274. ***
  275. ***    DOS _ASSIGN エントリ    5f
  276. ***
  277. KeepEntASSIGN:
  278.         move.l    oldvectASSIGN(pc),a0
  279.         movem.l    d1/a0-a3,-(sp)
  280.         cmp.w    #1,(a6)
  281.         bne    jmpold
  282.         move.l    6(a6),a0
  283.         bsr    pathcomplete_static_a6_2
  284.         tst.w    d0
  285.         bmi    errorret
  286.         move.l    a2,d0
  287.         movem.l    (sp)+,d1/a0-a3
  288.         move.w    10(a6),-(sp)
  289.         move.l    d0,-(sp)
  290.         move.l    2(a6),-(sp)
  291.         move.w    (a6),-(sp)
  292.         move.l    sp,a6
  293.         jsr    (sp)
  294.         lea.l    12(sp),sp
  295.         rts
  296.     jmpold:
  297.         movem.l    (sp)+,d1/a0-a3
  298.         jmp    (a0)
  299. ***
  300. ***    進路名展開
  301. ***
  302.     pathcomplete_static:
  303.         move.l    (a6),a0
  304.     pathcomplete_static_a6_2:
  305.         lea    pathbuf(pc),a1
  306.         move.l    a1,a3
  307.     pathcpyloop:
  308.         move.b    (a0)+,(a1)+
  309.         bne    pathcpyloop
  310.  
  311.     pathcomplete3:
  312.         lea    buffer(pc),a0
  313.         move.l    a0,d1
  314.  
  315.     pathcomplete:
  316.         move.l    a3,a0
  317.     retrypathcomp:
  318.         move.l    a0,a2        * a0:path
  319.  
  320.         move.b    (a2)+,d0
  321.         beq    exitpathcomp    * short cut
  322.         cmp.b    #'\',d0
  323.         beq    pathcompent
  324.         cmp.b    #'/',d0
  325.         beq    pathcompent
  326.     notcount:
  327.         move.l    a2,a3
  328.         move.b    (a3)+,d0
  329.         cmp.b    #':',d0
  330.         bne    notcount2
  331.         move.b    (a3)+,d0
  332.         cmp.b    #'\',d0
  333.         beq    countup2
  334.         cmp.b    #'/',d0
  335.         bne    notcount2
  336.     countup2:
  337.         move.l    a3,a2
  338.     notcount2:
  339.         subq.w    #1,a2
  340.  
  341.     pathcompent:
  342.     pathcomploop:
  343.         move.b    (a2)+,d0
  344.         beq    exitpathcomp
  345.  
  346.         cmp.b    #'\',d0
  347.         beq    pathdir
  348.         cmp.b    #'/',d0
  349.         bne    pathnotdir
  350.     pathdir:
  351.  
  352.         move.b    -(a2),d2
  353.         clr.b    (a2)
  354.  
  355.         movem.l    d1/a0/a2,-(sp)
  356.         move.l    a0,a2        * input path
  357.         move.l    d1,a1        * buffer
  358.         bsr    linkcheck3
  359.         movem.l    (sp)+,d1/a0/a2
  360.         tst.w    d0
  361.         bmi    errreturn
  362.         move.w    256+2(a1),d0
  363.  
  364.         move.b    d2,(a2)+
  365.         tst.w    d0
  366.         beq    pathcomploop    *notchange
  367.  
  368.         lea    8(a1),a3
  369.     loopfindstrnull:
  370.         tst.b    (a3)+
  371.         bne    loopfindstrnull
  372.         subq.w    #1,a3
  373.         subq.w    #1,a2
  374.     loopstrcatptr:
  375.         move.b    (a2)+,(a3)+
  376.         bne    loopstrcatptr
  377.         lea    8(a1),a3
  378.         move.l    a0,a2
  379.     loopstrcpyptr:
  380.         move.b    (a3)+,(a2)+
  381.         bne    loopstrcpyptr
  382.  
  383.         bra    retrypathcomp
  384.  
  385.     pathnotdir:
  386.         and.b    #$e0,d0
  387.         cmp.b    #$80,d0
  388.         beq    pathcompkanji
  389.         cmp.b    #$e0,d0
  390.         bne    pathcomploop
  391.     pathcompkanji:
  392.         tst.b    (a2)+
  393.         bne    pathcomploop
  394.  
  395.     exitpathcomp:
  396.         tst.w    lastchange
  397.         bne    skiplastchange
  398.  
  399.         movem.l    d1/a0/a2,-(sp)    * last change
  400.         move.l    a0,a2        * input path
  401.         move.l    d1,a1        * buffer
  402.         bsr    linkcheck2
  403.         movem.l    (sp)+,d1/a0/a2
  404.         tst.w    d0
  405.         bmi    errreturn
  406.         move.w    256+2(a1),d0
  407.  
  408.         tst.w    d0
  409.         beq    returnpathcomp
  410.         lea    8(a1),a3
  411.         move.l    a0,a2
  412.     loopstrcpy:
  413.         move.b    (a3)+,(a2)+
  414.         bne    loopstrcpy
  415.  
  416.     skiplastchange:
  417.     returnpathcomp:
  418.         move.l    a0,a2
  419.         moveq.l    #0,d0
  420.     errreturn:
  421.         rts
  422. ***
  423. ***    単純ファイル名展開
  424. ***
  425.     linkcheck:
  426.         move.l    (a6),a2
  427.     linkcheck3:
  428.         lea    buffer(pc),a1
  429.     linkcheck2:
  430.         clr.w    256+2(a1)    *change
  431.     retry:
  432.  
  433.         move.l    oldvectCHMOD(pc),$1800+$43*4.w
  434.         move.w    #-1,-(sp)
  435.         move.l    a2,-(sp)
  436.     linkswitch:
  437.         DOS    _CHMOD
  438.         addq.w    #6,sp
  439.         lea.l    KeepEntCHMOD(pc),a0
  440.         move.l    a0,$1800+$43*4.w
  441.  
  442.         btst.l    #6,d0
  443.     o_flagarea:
  444.         bne.s    openlinkfile    * short only
  445.  
  446.         tst.b    d0
  447.         bne    normalopen
  448.  
  449.         move.l    oldvectOPEN(pc),$18f4.w
  450.         clr.w    -(sp)
  451.         move.l    a2,-(sp)    * fname
  452.         DOS    _OPEN
  453.         addq.w    #6,sp
  454.         lea.l    KeepEntOPEN(pc),a0
  455.         move.l    a0,$18f4.w
  456.  
  457.         tst.l    d0
  458.         bmi    normalopen
  459.  
  460.         pea    257.w
  461.         move.l    a1,-(sp)    * buffer
  462.         move.w    d0,-(sp)
  463.         DOS    _READ
  464.         move.l    d0,d1
  465.         DOS    _CLOSE
  466.         lea    10(sp),sp
  467.         cmp.l    #256,d1        * sizecheck
  468.         bne    normalopen
  469.  
  470.         cmp.l    #'LINK',(a1)
  471.         bne    normalopen
  472.         cmp.l    #'   :',4(a1)
  473.         bne    normalopen
  474.     linkfileok:
  475.         lea    8(a1),a2
  476.         addq.w    #1,256+2(a1)    * change
  477.         move.w    256+2+2(a1),d0    * norec
  478.         cmp.w    256+2(a1),d0
  479.         bne    retry
  480.         moveq.l    #-2,d0
  481.         rts
  482.  
  483.     normalopen:
  484.         moveq.l    #0,d0
  485.         rts
  486. ***    o-format
  487.     openlinkfile:
  488.         move.l    oldvectOPEN(pc),$18f4.w
  489.         clr.w    -(sp)
  490.         move.l    a2,-(sp)    * fname
  491.         DOS    _OPEN
  492.         addq.w    #6,sp
  493.         lea.l    KeepEntOPEN(pc),a0
  494.         move.l    a0,$18f4.w
  495.         tst.l    d0
  496.         bmi    normalopen
  497.         pea    240.w
  498.         pea    8(a1)
  499.         move.w    d0,-(sp)
  500.         DOS    _READ
  501.         DOS    _CLOSE
  502.         lea    10(sp),sp
  503.         lea    8(a1),a0
  504.     strchr0dloop:
  505.         move.b    (a0)+,d0
  506.         beq    linkfileok
  507.         cmp.b    #$a,d0
  508.         beq    strchr0dexit
  509.         cmp.b    #$d,d0
  510.         bne    strchr0dloop
  511.     strchr0dexit:
  512.         clr.b    -(a0)
  513.         bra    linkfileok
  514. ***
  515. ***    static バッファ
  516. ***
  517.     buffer:
  518.         .ds.b    256
  519.     filesbuf:
  520.         .ds.b    2
  521.     change:
  522.         .dc.w    0
  523.     norec:
  524.         .dc.w    32
  525.     lastchange:
  526.         .dc.w    0
  527.     pathbuf:
  528.         .ds.b    256
  529.         .even
  530. KeepEnd:
  531. ***
  532. ***    非常駐部
  533. ***
  534.     ** Human v3
  535.     _Human3:
  536.         lea.l    $1800+$50*4.w,a0
  537.         lea.l    $30*4(a0),a1
  538.         moveq.l    #47,d0
  539.     human3_vect_loop:
  540.         move.l    (a0)+,(a1)+
  541.         dbra    d0,human3_vect_loop
  542.         rts
  543.     **
  544. _Start:
  545.         lea    stackbuf,sp
  546.  
  547.         pea    titlemes(pc)
  548.         DOS    _PRINT
  549.  
  550.         moveq.l    #0,d4
  551.         move.l    d4,(sp)
  552.  
  553.         DOS    _SUPER
  554.         move.l    d0,(sp)
  555.  
  556.         tst.b    (a2)+
  557.         beq    keepcheck
  558. * get arglist
  559.     getargloop:
  560.     skipspace:
  561.     skiptab:
  562.         move.b    (a2)+,d0
  563.         beq    keepcheck
  564.         cmp.b    #' ',d0
  565.         beq    skipspace
  566.         cmp.b    #9,d0
  567.         beq    skiptab
  568.         cmp.b    #'-',d0
  569.         bne    printusage
  570.         move.b    (a2)+,d0
  571.         beq    printusage
  572.         cmp.b    #'o',d0
  573.         beq    use_o_format
  574. *        bne    not_o_flag
  575. *        move.w    #'Nq',o_flagarea    *?
  576. *        bra    getargloop
  577.     not_o_flag:
  578.         cmp.b    #'r',d0
  579.         bne    printusage
  580.         moveq.l    #1,d4
  581.         bra    getargloop
  582.  
  583.     keepcheck:
  584.         move.w    #'Nq',o_flagarea    *?
  585.     use_o_format:
  586. * check
  587.     searchloop:
  588.         move.l    (a0),a0
  589.         cmp.l    #'SYMB',$100(a0)
  590.         bne    nextsearch
  591.         cmp.l    #'LINK',$104(a0)
  592.         beq    findit
  593.     nextsearch:
  594.         tst.l    (a0)
  595.         bne    searchloop
  596.  
  597.     notfound:
  598.         tst.w    d4        * is keepon?
  599.         bne    printnotkeep
  600.  
  601.     * keep memory
  602.  
  603.         lea    dosvectortable(pc),a0
  604.         lea    chgvectable(pc),a1
  605.  
  606.         moveq.l    #CHGVECTN-1,d2
  607.     keeponloop:
  608.         move.l    (a1)+,-(sp)
  609.         move.w    (a1)+,-(sp)
  610.         DOS    _INTVCS
  611.         addq.w    #6,sp
  612.         move.l    d0,(a0)+
  613.  
  614.         dbra    d2,keeponloop
  615.  
  616.         jsr    _Human3
  617.  
  618.         pea    keeponmes(pc)
  619.         DOS    _PRINT
  620.         addq.w    #4,sp
  621.  
  622.         DOS    _SUPER
  623.         addq.w    #4,sp
  624.  
  625.         clr.w    -(sp)
  626.         move.l    #KeepEnd-KeepStart,-(sp)
  627.         DOS    _KEEPPR
  628.  
  629.     findit:
  630.         tst.w    d4        * is keepon?
  631.         beq    printalready
  632.  
  633.         cmp.l    #VERSION,$10c(a0)
  634.         bcs    printversionerr
  635.  
  636.     * cancel memory
  637.  
  638.         move.l    $100+16(a0),a1
  639.         lea    chgvectable+4(pc),a2
  640.         moveq.l    #CHGVECTN-1,d2
  641.  
  642.     keepoffloop:
  643.         move.l    (a1)+,-(sp)
  644.         move.w    (a2)+,-(sp)
  645.         DOS    _INTVCS
  646.         addq.w    #6,sp
  647.         addq.w    #4,a2
  648.  
  649.         dbra    d2,keepoffloop
  650.  
  651.         pea    16(a0)
  652.         DOS    _MFREE
  653.         pea    keepoffmes(pc)
  654.         DOS    _PRINT
  655.         addq.w    #8,sp
  656.  
  657.         jsr    _Human3
  658.  
  659.         DOS    _SUPER
  660.         addq.w    #2,sp
  661.  
  662.         clr.w    (sp)
  663.         DOS    _EXIT2
  664.  
  665.     printusage:
  666.         pea    usagemes(pc)
  667.     errexit:
  668.         DOS    _PRINT
  669.         addq.w    #4,sp
  670.  
  671.         DOS    _SUPER
  672.         addq.w    #2,sp
  673.  
  674.         move.w    #1,(sp)
  675.         DOS    _EXIT2
  676.     printnotkeep:
  677.         pea    notkeepmes(pc)
  678.         bra    errexit
  679.     printalready:
  680.         pea    alreadymes(pc)
  681.         bra    errexit
  682.     printversionerr:
  683.         pea    versionmes(pc)
  684.         bra    errexit
  685.  
  686.     chgvectable:
  687.         .dc.l    KeepEntMKDIR
  688.         .dc.w    _MKDIR
  689.         .dc.l    KeepEntRMDIR
  690.         .dc.w    _RMDIR
  691.         .dc.l    KeepEntCHDIR
  692.         .dc.w    _CHDIR
  693.         .dc.l    KeepEntCREATE
  694.         .dc.w    _CREATE
  695.         .dc.l    KeepEntOPEN
  696.         .dc.w    _OPEN
  697.         .dc.l    KeepEntDELETE
  698.         .dc.w    _DELETE
  699.         .dc.l    KeepEntCHMOD
  700.         .dc.w    _CHMOD
  701.         .dc.l    KeepEntFILES
  702.         .dc.w    _FILES
  703.         .dc.l    KeepEntRENAME
  704.         .dc.w    _RENAME
  705.         .dc.l    KeepEntMAKETMP
  706.         .dc.w    _MAKETMP
  707.         .dc.l    KeepEntNEWFILE
  708.         .dc.w    _NEWFILE
  709.         .dc.l    KeepEntASSIGN
  710.         .dc.w    _ASSIGN
  711.  
  712.     titlemes:
  713.         .dc.b    'link.x  Version '        * even
  714.         .dc.l    VERSION
  715.         .dc.b    ' 1991/95 H.Ogasawara (COR.)',13,10,0
  716.     usagemes:
  717.         .dc.b    'usage: link [-r]',13,10,0
  718.     notkeepmes:
  719.         .dc.b    '常駐していません',13,10,0
  720.     alreadymes:
  721.         .dc.b    '既に常駐しています',13,10,0
  722.     keepoffmes:
  723.         .dc.b    '開放しました',13,10,0
  724.     keeponmes:
  725.         .dc.b    '常駐しました',13,10,0
  726.     versionmes:
  727.         .dc.b    'バージョンが違います',13,10,0
  728.         .even
  729.  
  730.         .bss
  731.         .ds.b    4096
  732.     stackbuf:
  733.  
  734.         .end    _Start
  735.  
  736.